In the present description, an end user is the person that uses an application's functionality, while a client is the entity responsible for purchasing, installing, integrating and maintaining the application. Clients are customers of the application developer or distributor, while end users are employees or guests of the clients. In general, users can be divided into two groups, end users, who use the application's functionality, and master users, or super users, who act on behalf of the client to purchase, install, integrate and maintain the application. A master user is equivalent to the system administrator within the client computing environment. In some instances, the master user and the end user may be one and the same.
A client's interaction with an application can generally be divided into two distinct categories, first, acquiring the application, and second, making the application's functionality available to its users.
When combined, these two steps refer to all the activities necessary to make the application run, including purchasing the application, and installing, integrating, testing, securing, optimizing, managing, upgrading, customizing, troubleshooting, and monitoring the application over its life cycle. Resources are required from both the application developer or distributor and the client. The application developer or distributor furnishes support and consulting, while the client provides information technology (“IT”) resources. The client is responsible for the hardware requirements, network bandwidth, storage and the associated support for its users. The process repeats when new versions or upgrades of the application are released. A fill 70% to 90% of the client's IT budget is spent acquiring, deploying, integrating and maintaining applications.
FIG. 1 shows an example of the traditional “shrink wrap” approach to providing an application's functionality to users 26. In this traditional approach, a single tenant server-based application is installed as a single application “instance” 20 within a client computing environment 22. A server-based application refers to an application that is managed at the server level and accessed remotely by users 26. Examples of server-based applications include: 1) Web applications developed using web technologies such as Java™ 2 Platform, Enterprise Edition (J2EE), Microsoft's .NET™, Web Services and HyperText Markup Language (HTML); 2) Desktop client server applications or desktop personal productivity applications deployed using thin client technologies such as Microsoft™ Windows™ Terminal Server or CITRIX™ ICA; and 3) Applications streamed to each user 26 on request using an application such as AppStream™, as described in U.S. Pat. No. 6,574,618, issued on Jun. 3, 2003. In this traditional approach, applications must be purchased, installed, integrated, tested and maintained by the client. Some support and consulting may be offered by the application developer or distributor, but it is the client who is responsible for ensuring access to the application's functionality by its users 26. The disadvantage of this traditional approach is that each time new software is needed or application upgrades made available, the whole process must be repeated, which can eat up a lot of client resources. Moreover, the development and maintenance of IT infrastructure, including software applications, is not generally the core expertise of the client.
Of course, the ultimate goal of all clients is to provide the application's functionality to the client's users and guests. Therefore, it would be advantageous if a system could be provided that reduced or eliminated the complexity and cost associated with the acquisition, deployment and maintenance of computer applications, so as to provide the client and its users with the easiest and most expeditious possible access to the application's functionality at the lowest possible cost. Such a system would allow clients and their corresponding users to extract the application's functionality “on demand”, without having to deal with all the other tasks required to deploy, integrate and maintain the application.
Provisioning of applications “on demand” refers to providing applications to clients of the application developer or distributor, enabling them to deliver the application's functionality to the user. It is the client that has to deal with all the technical issues associated with the delivery and usage of the application's functionality by the users, such as purchasing, deploying, maintaining, managing and upgrading. Provisioning of applications “on-demand” refers to replacing the current “shrink-wrap” deployment of existing applications with a system that performs all the functions necessary for providing and readying the application for use by the user.
The traditional application service provider (“ASP”) approach to solving this problem is shown in FIG. 2. In this approach, single tenant server-based applications are installed as application instances 20 and maintained in a service provider computing environment 52. Access by users 26 to the applications' functionality is provided online, through a computer communication system 40 by way of an application universal resource identifier (“URI”). Computer communication system 40, may be any data network, such as the Internet, an intranet, extranet or other TCP/IP based communication network, or other types of data networks, including wireless data networks.
One advantage of this solution is that applications need no longer be installed and maintained by the client in the client computing environment. Instead, they are installed and maintained in the service provider computing environment 52, thus saving the client considerable time and IT resources.
One problem with this traditional ASP approach is that for it to function properly, each new client requires a separate installation or “instance” 20 of the application to be installed within the service provider computing environment 52, however, there is no mechanism in place to create and manage this new installation, it must be done manually for each new client. Also, in this traditional approach there is no convenient means for the client to purchase, configure or manage the applications except through traditional methods such as contacting the service provider by telephone or email. In the traditional service provider approach, the applications are not “on demand”. This results in higher costs for providing and managing applications since all provisioning and management functions must be performed manually. The time required to deploy applications is also increased. Moreover, due to the multiple points of contact between the client and the ASP, and the complex nature of the interaction, there is a significant opportunity for human error, which produces less consistent and less reliable results.
One existing approach to solving the problem is shown in FIG. 3. In this solution, the ASP provides a sever-based application installed as an instance 20 in a service provider computing environment 52. As before, access by users 26 to the application's functionality is provided online through a computer communication system 40 by way of an application URI. One advantage of this system is that clients also gain online, on demand access, through the computer communication system 40, to provisioning and management functions, thereby permitting clients to make online purchase requests and to configure and manage the application. One problem with this approach is that for the application to be usable by multiple clients, each having multiple users 26, the application must be developed from the ground up with a “multi-tenant” approach in mind, or existing single-tenant applications must be customized, a costly, time consuming and risky process. Therefore, the system cannot be used for on demand provisioning of most existing off-the-shelf applications to clients. Although each client and its users 26 appear to get access to a customized version of the application, in reality, they are all accessing the same application instance 20, with only the client's personal data being stored separately. No separate application instance 20 is created and installed for each client. Typically, only a single multi-tenant application is offered through a web portal dedicated to provisioning and managing that application's functionality. Functionalities of the application are closely coupled to the provisioning and management functions of the web portal, which makes the application more difficult to develop, manage and maintain. The system is not easily adapted to offering multiple applications through the same web portal.